.gitignore 模式匹配
.gitignore 用来让 git 在跟踪时忽略特定的文件,每一行是一个模式,#
注释。1
*.[ao]
一些点
!
反匹配反匹配用于忽略目录中的 except 情况,参见git 官方文档
1
2
3
4/*
!/foo
/foo/*
!/foo/bar然而在排除了整个目录中,不能再次包含其中的某个/些文件了!见git 官方文档,
It is not possible to re-include a file if a parent directory of that file is excluded.
所以下面这样的话,
1
2foo/
!foo/barfoo/bar 不会包含,会被忽略。
- 采用 glob
/
匹配 .gitignore 所在目录- 层级 .gitignore ,子目录中的模式覆盖父目录中的
- git 会忽略过滤(根据 .gitignore)后的全空目录
我认为的和实际上的不同
*.a
的作用
*.a
会匹配 当前目录 以及 所有子孙目录 中的文件,我本来以为只会匹配当前目录下的后缀为 a
的文件。
.gitkeep 文件的作用
就是用于包含空目录的!原理在于实际上将 .gitkeep 文件加入仓库,该目录就不是全空了!所以换成任何文件都行,比如 .empty ,.gitkepp 只是惯用名称,参见这里